home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
util
/
moni
/
Sysmon120a.lha
/
sysmon
/
include
/
sysmon.i
< prev
Wrap
Text File
|
2002-03-10
|
15KB
|
387 lines
** sysmon.i
**
** $Filename: sysmon.i $
** $Revision: 1.16 $
** $Date: 2001/04/28 14:12:44 $
**
*******************************************************************************
** definition of sysmon.library base and internal structures (version 1.18)
*******************************************************************************
**
** Copyright (c) 1995-2002 by Etienne Vogt.
**
IFND SYSMON_I
SYSMON_I SET 1
IFND EXEC_LIBRARIES_I
INCLUDE "exec/libraries.i"
ENDC
IFND EXEC_SEMAPHORES_I
INCLUDE "exec/semaphores.i"
ENDC
IFND EXEC_MEMORY_I
INCLUDE "exec/memory.i"
ENDC
IFND DEVICES_TIMER_I
INCLUDE "devices/timer.i"
ENDC
IFND DOS_DATETIME_I
INCLUDE "dos/datetime.i"
ENDC
* library data structure
* All field in the SysmonBase structure are PRIVATE !!!
* Don't access these directly as they will change in future versions.
* You have been warned !!!
HASHSIZE EQU 32
HASHMASK EQU $f8
STRUCTURE SysmonBase,LIB_SIZE ; Standard lib node
UBYTE sb_Flags ; Some flags here
UBYTE sb_pad ; We are now longword aligned
APTR sb_ExecBase ; Pointer to exec
APTR sb_UtilityBase ; Pointer to utility
BPTR sb_SegList ; SegList BCPL pointer
APTR sb_CurrTaskInfo ; Current TaskInfo Structure
APTR sb_Switch ; Original Switch() entry point
APTR sb_Dispatch ; Original Dispatch() entry point
APTR sb_AddTask ; Original AddTask() entry point
APTR sb_RemTask ; Original RemTask() entry point
APTR sb_FindTask ; Original FindTask() entry point
APTR sb_Alert ; Original Alert() entry point
APTR sb_ExitIntr ; Original ExitIntr() entry point
APTR sb_Schedule ; Original Schedule() entry point
APTR sb_Exception ; Original Exception() entry point
APTR sb_SetTaskPri ; Original SetTaskPri() entry point
APTR sb_SetExcept ; Original SetExcept() entry point
APTR sb_SetSignal ; Original SetSignal() entry point
APTR sb_Signal ; Original Signal() entry point
APTR sb_Wait ; Original Wait() entry point
APTR sb_TaskExit ; Original ExecBase->TaskExitCode
APTR sb_TaskExcept ; Original ExecBase->TaskExceptCode
APTR sb_TaskTrap ; Original ExecBase->TaskTrapCode
STRUCT sb_TimeReq,IOTV_SIZE ; Time Request
STRUCT sb_TempTime,EV_SIZE ; Temporary EClock Time
STRUCT sb_TaskFrozen,LH_SIZE ; List of frozen tasks
BYTE sb_ResetBit ; Signal bit for reset handler
UBYTE sb_ResetFlags ; Flags for reset handler
STRUCT sb_TaskInfoHash,4*HASHSIZE ; TaskInfo hash table
APTR sb_ServerEntry ; Server process entry point
APTR sb_ServerName ; Server process name
APTR sb_SyslogFile ; SysLog file name
APTR sb_SyslogWindow ; Syslog Window Name
UBYTE sb_FilePri ; File logging priority
UBYTE sb_WindowPri ; Window logging priority
UBYTE sb_ConsolePri ; Console logging priority
UBYTE sb_NumLogBuffers ; Number of allocated Buffers
APTR sb_Buffers ; Pointer to allocated buffers
APTR sb_DOSBase ; Pointer to dos
APTR sb_DateTime ; struct DateTime used by syslog
ULONG sb_StampPeriod ; Period for syslog file stamp
BPTR sb_LogWindowHandle ; LogWindow file handle
APTR sb_IntuitionBase ; Pointer to intuition
APTR sb_LastGuru ; Pointer to LastGuru structure
APTR sb_SyslogPort ; Pointer to Syslog MsgPort
APTR sb_ServerProc ; Pointer to server process
APTR sb_ResetHandler ; Pointer to reset handler
APTR sb_ResetReq ; Pointer to reset request
STRUCT sb_BCPSem,SS_SIZE ; Semaphore for Broadcast Ports list
STRUCT sb_BroadcastPorts,MLH_SIZE ; List of Registered Broadcast Ports
STRUCT sb_TTASem,SS_SIZE ; Semaphore for Task Table Access
STRUCT sb_TTRSem,SS_SIZE ; Semaphore for Task Table Removal
STRUCT sb_CPUTime,EV_SIZE ; Total CPU Time used by tasks
APTR sb_MMUBase ; Pointer to mmu library
APTR sb_ColdReboot ; Cached ColdReboot() vector
ULONG sb_VolTSw ; Voluntary Task Switches counter
ULONG sb_InvTSw ; Involuntary Task Switches counter
STRUCT sb_LdAvrVBLInt,IS_SIZE ; Load Average VBL Interrupt
UWORD sb_LdAvrPtr ; Pointer in Load Average circular buffer
STRUCT sb_LdAvrBuffer,15*60 ; Load Average circular Buffer, updated every
; second from the sysmon.library VBlank interrupt
ULONG sb_QuantumExp ; Global Quantum Expiration counter
APTR sb_SuperState ; Original SuperState() entry point
APTR sb_UserState ; Original UserState() entry point
LABEL SysmonBase_SIZEOF
* The TaskInfo structure contains the CPU usage information in EClock ticks.
* The link pointers are private and should not be used. Use the smNextTaskInfo()
* function to traverse the list.
* This structure may be extended later with new fields. Also all fields are
* strictly READ ONLY.
STRUCTURE TaskInfo,0
APTR ti_Link ; private pointer to next TaskInfo
APTR ti_Pred ; private pointer to previous TaskInfo
APTR ti_Task ; pointer to Task Control Block
ULONG ti_DispCount ; Task Dispatch counter
STRUCT ti_StartTime,EV_SIZE ; Starting EClock Time
STRUCT ti_LaunchTime,EV_SIZE ; Last Launch Time
STRUCT ti_CPUTime,EV_SIZE ; Cumulated CPU Time
UBYTE ti_Flags ; Various flags
UBYTE ti_ExcptState ; Task State saved by Exception()
BYTE ti_EDNestCnt ; Exception Disable Nest Count
UBYTE ti_FreezeState ; Task State saved by smFreeze()
ULONG ti_VolTSw ; Voluntary Task Switches counter
ULONG ti_InvTSw ; Involuntary Task Switches counter
ULONG ti_QuantumExp ; Quantum Expiration counter
LABEL TaskInfo_SIZEOF
* ti_Flags bits
BITDEF TI,INEXCEPT,0 ; Task is inside Exception code
BITDEF TI,WAKEUP,1 ; A WakeUp request is pending
* This is the private structure used by smVSysLog() to communicate with the
* Sysmon.server process.
SM_MAXLOGCHARS EQU 256 ; Max bytes in SysLog message
STRUCTURE SysLogMsg,MN_SIZE ; Message structure
ULONG slm_Priority ; SysLog priority and flags
STRUCT slm_Text,SM_MAXLOGCHARS ; Syslog Message body
LABEL SysLogMsg_SIZEOF
SYSMONNAME MACRO
DC.B 'sysmon.library',0
ENDM
SERVERNAME MACRO
DC.B 'Sysmon.server',0
ENDM
* sb_Flags bits
BITDEF SBF,FPU,0 ; System has a FPU
BITDEF SBF,IDLELED,1 ; Dim power LED when CPU is idle
BITDEF SBF,MMU,2 ; System has a MMU (according to mmu.library)
BITDEF SBF,MACOSKLUDGE,3 ; Try to be friendly to MacOS emulators
BITDEF SBF,SUPERSTATE,7 ; PRIVATE flag for smSuperState()
* sb_ResetFlags bits
BITDEF SBRST,ACTIVATE,0 ; Activate reset handler
BITDEF SBRST,PENDING,1 ; Reset is pending
BITDEF SBRST,OLDMMU,2 ; Restore old MMU setup before reboot
BITDEF SBRST,CACHEREBOOT,3 ; Use a cached ColdReboot() vector
* Alert definitions
* These are the Guru codes that sysmon.library can spit out in a panic
* condition.
AN_Sysmon EQU $40000000 ; SubSystem ID
AN_smNoTaskInfo EQU $40000001 ; No TaskInfo structure for this task
AN_smNoTIMem EQU $40010002 ; No mem for TaskInfo at startup
AN_smSysLogBuf EQU $40010003 ; No memory for syslog buffers
AN_BadSysLogMsg EQU $40000004 ; Bad SysLogMsg received by server
AN_smNoLastGuru EQU $40010005 ; No memory for LastGuru buffer
AN_smNoAlertMem EQU $40010006 ; No memory for new alert.hook module
AN_smSuperTaskSwitch EQU $C0000007 ; Attempt to switch task from supervisor mode
AN_smInconSchedState EQU $C0000008 ; Inconsistant Scheduling State
AO_Sysmon EQU $00008040 ; Alert object
* These are reused obsolete exec alert codes
AN_UnInitExcpt EQU $0100000A ; Uninitialized task exception (not CPU trap)
* New Task States Definitions (not all used yet !)
* TS_STOP is not a real state. It is used by ShowSys to identify tasks that
* are stuck in a Wait(0) call, such as crashed tasks that have been suspended.
TS_STOP EQU $80 ; Stopped task (Wait(0L))
TS_FROZEN EQU $81 ; Frozen task
TS_HIBERNATE EQU $82 ; Hibernating task
TS_PAGEFLTWAIT EQU $83 ; Task suspended for page fault processing
TS_WAITAND EQU $84 ; Task waiting for several signals set together
TS_TRAP EQU $85 ; Task suspended by exception trap code
TS_FREEWAIT EQU $86 ; Task waiting for free memory
* SysLog priorities and flags
* The priorities are similar to that used on UNIX systems. This means that
* the values use the UNIX ordering that is reversed from the Amiga one.
* The facilities are also UNIX like and indicate what part of the system
* produced the message. This is purely informational currently.
* The flags are Amiga and sysmon specifics.
* Priorities
LOG_EMERG EQU 0 ; Panic condition (Guru time)
LOG_ALERT EQU 1 ; Very serious problem
LOG_CRIT EQU 2 ; Critical error
LOG_ERR EQU 3 ; General error condition
LOG_WARN EQU 4 ; Warning condition
LOG_NOTICE EQU 5 ; Noticeable event
LOG_INFO EQU 6 ; General informational event
LOG_DEBUG EQU 7 ; Debugging information
LOG_PRI EQU $7 ; Mask for priority field
* Facilities
LOG_NOFAC EQU (0<<3) ; no facility
LOG_KERN EQU (1<<3) ; kernel/system messages
LOG_USER EQU (2<<3) ; random user-level messages
LOG_MAIL EQU (3<<3) ; mail system
LOG_DAEMON EQU (4<<3) ; system daemons/commodities
LOG_AUTH EQU (5<<3) ; security/authorization messages
LOG_SYSLOG EQU (6<<3) ; messages generated internally by Syslog
LOG_NEWS EQU (7<<3) ; network news subsystem
LOG_UUCP EQU (8<<3) ; UUCP subsystem
LOG_CRON EQU (9<<3) ; cron/queue_manager subsystem
LOG_AUTHPRIV EQU (10<<3) ; private security/authorization messages
LOG_FTP EQU (11<<3) ; ftp daemon
* other codes through 15 reserved for system use
LOG_LOCAL0 EQU (16<<3) ; reserved for local use
LOG_LOCAL1 EQU (17<<3) ; reserved for local use
LOG_LOCAL2 EQU (18<<3) ; reserved for local use
LOG_LOCAL3 EQU (19<<3) ; reserved for local use
LOG_LOCAL4 EQU (20<<3) ; reserved for local use
LOG_LOCAL5 EQU (21<<3) ; reserved for local use
LOG_LOCAL6 EQU (22<<3) ; reserved for local use
LOG_LOCAL7 EQU (23<<3) ; reserved for local use
LOG_MARK EQU (24<<3) ; special time stamp mark
LOG_UNKNOWN EQU (25<<3) ; unknown facility code
LOG_FAC EQU $03f8 ; Mask for facility field
* Flags
LOG_INUSE EQU $80000000 ; Message is in use (private !)
LOG_NOHEAD EQU $40000000 ; Don't prepend header
LOG_NOWIN EQU $20000000 ; Don't output to window
LOG_NOFILE EQU $10000000 ; Don't output to file
LOGB_INUSE EQU 31 ; Bit numbers for flags
LOGB_NOHEAD EQU 30
LOGB_NOWIN EQU 29
LOGB_NOFILE EQU 28
* Flags definitions for smHalt()
BITDEF HALT,REBOOT,0 ; Reboot immediately
BITDEF HALT,REKICK,1 ; Reload kickstart on MMU-Kicked systems.
* Broadcast Message send via smSendBroadcastMsg()
* The sender must allocate this structure and fill in the different fields.
STRUCTURE BroadcastMsg,MN_SIZE ; Standard Message structure
UBYTE bcm_Level ; Event Level
UBYTE bcm_Flags ; Flags
UWORD bcm_TimeOut ; Reply Time Out in ticks
UWORD bcm_CountDown ; Countdown to Event in seconds
UBYTE bcm_ReplyCount ; Reply count after sending
UBYTE bcm_TimeOutCount ; Time Out count after sending
APTR bcm_SenderTask ; Sender Task (Filled by smSendBroadCastMsg())
APTR bcm_EventTxt ; Text describing the event
STRUCT bcm_Reserved,4*4 ; Reserved for future expansion
LABEL BCM_SIZEOF
* defines for event levels
BCM_HALT EQU 0 ; System Halt/Reboot imminent
BCM_UNMOUNT EQU 1 ; FileSystems will be UnMounted now
BCM_SHUTDOWN EQU 2 ; Shutdown countdown message
BCM_URGENT EQU 3 ; Urgent Message
BCM_NORMAL EQU 4 ; Normal Message
BCM_DEBUG EQU 5 ; Debug Level Message
* defines for bcm_Flags
BITDEF BCM,DOOMSDAY,0 ; Keyboard reset pending (System reboot in 10 seconds at most)
BITDEF BCM,CANCEL,1 ; A previously announced event has been cancelled
* defines for smLockTaskTable()/smUnLockTaskTable() flags
BITDEF LTT,READ,0 ; Read access to task table
BITDEF LTT,WRITE,1 ; Write access (PRIVATE !)
BITDEF LTT,REMOVE,2 ; Prevent task removal
* The LastGuru structure contains information about the last Guru Meditation
* The data is stored in a high memory buffer by Alert() that is allocated by
* sysmon.library during initialisation.
* As this buffer is allocated early with AllocMem(MEMF_REVERSE), it will be
* kept at the same address after reboot. This trick was already used successfully
* on recoverable ram disks like vdisk.device
* Some Fields are only valid if the corresponding register exists on the CPU
* installed in the system.
STRUCTURE LastGuru,MC_SIZE ; leave space for a memory chunk
ULONG lg_Sig ; Alert signature ('HELP')
ULONG lg_AlertNum ; Guru Meditation number
ULONG lg_AlertAddr ; TCB Address of crashed task
STRUCT lg_TaskName,32 ; Task name limited to 32 bytes
STRUCT lg_DataRegs,8*4 ; Data registers D0-D7
STRUCT lg_AddrRegs,8*4 ; Address registers A0-A7
STRUCT lg_FloatRegs,8*12 ; Floating point registers FP0-FP7
ULONG lg_FPCR ; Floating Point Control Register
ULONG lg_FPSR ; Floating Point Status Register
ULONG lg_FPIAR ; Floating Point Instruction Address Register
ULONG lg_PC ; Program Counter
ULONG lg_USP ; User Stack Pointer
ULONG lg_SSP ; Supervisor/Interrupt Stack Pointer
ULONG lg_MSP ; Master Stack Pointer / Processor Control Register [68060]
ULONG lg_VBR ; Vector Base Register
ULONG lg_SFC ; Source Function Codes
ULONG lg_DFC ; Destination Function Codes
ULONG lg_CACR ; Cache Control Register
ULONG lg_TC ; Translation Control register
ULONG lg_ITT0 ; Intruction Transparent Translation 0
ULONG lg_ITT1 ; Intruction Transparent Translation 1
ULONG lg_DTT0 ; Data Transparent Translation 0 / Common Root Pointer [68030]
ULONG lg_DTT1 ; Data Transparent Translation 1 / Common Root Pointer [68030]
ULONG lg_URP ; User Root Pointer / Supervisor Root Pointer [68030]
ULONG lg_SRP ; Supervisor Root Pointer
ULONG lg_MMUSR ; MMU Status Register / Bus Control Register [68060]
ULONG lg_CAAR ; Cache Address Register
UWORD lg_SR ; Status Register
UWORD lg_AC ; Access Control register [68851]
STRUCT lg_DRP,8 ; DMA Root Pointer [68851]
STRUCT lg_BAD,8*2 ; Breakpoint Acknowledge Data registers [68851]
STRUCT lg_BAC,8*2 ; Breakpoint Acknowledge Control registers [68851]
UBYTE lg_CAL ; Current Access Level [68851]
UBYTE lg_VAL ; Valid Access Level [68851]
UBYTE lg_SCC ; Stack Change Control register [68851]
UBYTE lg_Pad ; Padding byte
LABEL lg_SizeOf
* Function LVOs
INCLUDE "exec/funcdef.i"
FUNCINIT
FUNCDEF smGetTaskInfo
FUNCDEF smFreeze
FUNCDEF smUnFreeze
FUNCDEF smSleep
FUNCDEF smVKPrintf
FUNCDEF smVSPrintf
FUNCDEF smVSysLog
FUNCDEF smFindTaskInfo
FUNCDEF smNextTaskInfo
FUNCDEF smHalt
FUNCDEF smVSnPrintf
FUNCDEF smFindNode
FUNCDEF smAddBroadcastPort
FUNCDEF smRemBroadcastPort
FUNCDEF smSendBroadcastMsg
FUNCDEF smGetVBR
FUNCDEF smMoveVBR
FUNCDEF smLockTaskTable
FUNCDEF smUnLockTaskTable
FUNCDEF smDisallowExcept
FUNCDEF smAllowExcept
FUNCDEF smHibernate
FUNCDEF smWakeUp
FUNCDEF smScheduleWakeUp
FUNCDEF smEndExcept
FUNCDEF smWaitAnd
ENDC ;SYSMON_I